/** @jsxImportSource @emotion/react */
import * as React from "react";
import {Button, TextArea, Text, useTheme, useToast,} from "customize-easy-ui-component";
import {InspectRecordLayout, InternalItemProps, useItemInputControl} from "../../common/base";
import {useMedia} from "use-media";
import {assertNamesUnique} from "../../common/eHelper";
import {itemA下结论} from "../editorJJ";
import {itemA查材料, } from "../editorReview";
import {itemA宏观检验} from "../editorMacr";
import {itemA安全附件, itemA液面计} from "../editSAcces";
import {eqpTypeAllMap} from "../../../dict/eqpComm";
import {EditStorageContext} from "../../StorageContext";
import {config证书概要} from "../editorCert";



const render设备品种={
    view:(orc:any)=>{
        return <>{eqpTypeAllMap.get(orc?.设备品种)}</>
    },
};
export const config设备概况 = [
    [['使用单位', '_$使用单位'], ],
    [['单位地址', '_$使用单位地址'], ['单位代码', '_$使用单位信用码'] ],
    [['制造国/地区', '_$制造国'], ['设计单位', '_$设计单位'] ],
    [['制造单位', '_$制造单位'], ['设计、制造规范', '_$设计规范'] ],
    [['管理人员', '安全员'], ['联系电话', '安全员电'], ['邮政编码', '_$使用单位邮编'] ],
    [['设备名称', '_$设备名称'], ],
    //压力容器品种 :本平台的台账并没有存的字段；
    [['设备品种', '_$设备品种',render设备品种], ['压力容器品种','器品种'] ],
    [['产品编（批）号', '_$出厂编号'], ['主体结构型式','_$主体结构']],
];

/**开启编制时的：默认值初始化操作。  若打印：本编辑器全部都不显示。
 * */
export const EntranceSetup =
    React.forwardRef((
        {children, show, alone = true, repId, verId, rep}: InternalItemProps, ref
    ) => {
        const atPrint = useMedia('print');
        const toast = useToast();
        const doCheckNames = React.useCallback((verId: string) => {
            //【承压更少项目】，那些属于公共模板目录的 分项报告的唯一性检查在对方自己检查看。
            const result = assertNamesUnique([{value: rep?.tzFields},
                {value: config设备概况, type:'esnt'},  {value: config证书概要, type:'esnt'},
                {value:[...itemA下结论, ...itemA宏观检验,  ...itemA安全附件,...itemA液面计 ,...itemA查材料]},
                {value: config资料审查, type:'esnt'},
                {value:['Projects', ]} ]);
            toast({title: "完成！", subtitle: result ? "没发现冲突" : "测试开关没开", intent: "success"});
        }, [rep,toast]);
        const {storage, setStorage} =React.useContext(EditStorageContext) as any;
        const getInpFilter = React.useCallback((par: any) => {
            const {_tblFixed, } =par||{};
            return {_tblFixed, };
        }, []);
        const {inp, setInp} = useItemInputControl({ref});
        if (atPrint) return null;
        else return (
            <InspectRecordLayout inp={inp} setInp={setInp} getInpFilter={getInpFilter} show={show}
                                 alone={alone} label={'初始化本报告，默认值配置等'}>
                {process.env.REACT_APP_TEST==='true' && <><div>
                    <Text variant="h5">构建开发模板时的工具：校验模板的存储name冲突；</Text>
                    <Button intent='primary' onPress={() => doCheckNames(verId!)}>校验模板name唯一性</Button>
                    <Text variant="h5">设置待测试表格的各列宽度：</Text>
                    <TextArea value={storage?._tblFixed || ''} rows={2}
                            onChange={e => setStorage({ ...storage, _tblFixed: e.currentTarget.value || undefined}) }/>
                    </div>
                </>
                }
                <hr/>
            </InspectRecordLayout>
        );
    });



const view腐蚀=(orc:any)=>{
    return <Text css={{fontSize:'0.75rem'}}>腐蚀裕度（mm）</Text>
};
const view容积=(orc:any)=>{
    return <Text>{orc?.是换热? '换热面积':'容积'}</Text>
};
const render容积换热={
    view:(orc:any)=>{
        const has=!!(orc?.是换热);
        //<Text css={{ [theme.mediaQueries.lg+', print']: {wordBreak: 'keep-all'} }}>{has? 'm²' : 'm³'}</Text>
        return <>
            <div css={{ display: 'flex',justifyContent: 'space-around',alignItems: 'center'}}>
                <Text>{orc?.容积换热}</Text>
                <Text>{has? 'm²' : 'm³'}</Text>
            </div>
        </>
    },
};
//【新配置模式】 设备概况，还会支持有多各行共有的列标题，前缀性质的汇总列。 参考模板 IMCONT-SA;
//模型参考： [[desc, name, cb], add2p]: any, i: number)
//pr前缀只能继承同一个列的前面几个连续同样设置的行的配置。 左边和右边两半列区是独立的。 或者设置pr:null就是去掉该前缀影响范围或者不是{}的标题也自动去掉继承性前缀。
export const config资料审查 = [
    [['产品名称', '_$设备名称'], ['产品编（批）号', '_$出厂编号'] ],
    [['制造日期', '_$制造日期'], ['容器内径', {n:'_$内径',u:'mm'},] ],
    //允许充装量 =  (pa?.充重);  //.充重(Tool.castFloat(pms.getLoadweight()))
    [['境外监督检验机构', '境外督机'], ['最大充许充装量', {n:'_$允许充装量',u:'kg'},] ],
    [[{pr:'结构型式', span:2, t:'主体结构型式'}, '_$主体结构'], ['安装型式', '_$安装型式'] ],
    [[{t:'支座型式'}, '_$支座型式'], ['保温绝热方式', '_$保温绝热方式'] ],
    [[{pr:'设计压力', span:2, t:'壳体（壳程）'}, {n:'_$壳程设计压力',u:'MPa'},], [{pr:'工作压力', span:2, t:'壳体（壳程）'}, {n:'_$壳程使用压力',u:'MPa'},] ],
    [[{t:'夹套（管程）'}, {n:'_$管程设计压力',u:'MPa'}, ], [{t:'夹套（管程）'}, {n:'_$管程使用压力',u:'MPa'}, ] ],
    [[{pr:'设计温度', span:2, t:'壳体（壳程）'}, {n:'_$壳程设计温度',u:'℃'} ], [{pr:'工作温度', span:2, t:'壳体（壳程）'}, {n:'_$壳程使用温度',u:'℃'},] ],
    [[{t:'夹套（管程）'}, {n:'_$管程设计温度',u:'℃'}, ], [{t:'夹套（管程）'}, {n:'_$管程使用温度',u:'℃'}, ] ],
    [[{pr:'腐蚀裕度（mm）', span:2, t:'筒体',prview: view腐蚀}, '_$筒体腐裕度'], [{pr:'介质', span:2, t:'壳体（壳程）'}, '_$壳程介质'] ],
    //没走的这个参数：  夹套介质;     .夹套介质(device.getJakm()).管程介质(svp.get管介())
    [[{t:'封头'}, {n:'_$封头腐裕度'}, ], [{t:'夹套（管程）'}, {n:'_$管程介质'}, ] ],
    [[{pr:'材质', span:4, t:'筒体'}, '_$筒体材质'], [{pr:'厚度（mm）', span:4, t:'筒体'}, '_$筒体厚度'] ],
    [[{t:'封头'}, '_$封头材质'], [{t:'封头'}, '_$封头厚度'] ],
    [[{t:'夹套（换热管）'}, '_$夹套材质'], [{t:'夹套（换热管）'}, '_$夹套厚度'] ],
    [[{t:'衬里'}, '_$衬里材质'], [{t:'衬里'}, '_$衬里厚度'] ],
    //"unit":"m³,m²",
    [['高/长', {n:'_$外形高长',u:'mm'}, ], [{t:'容积',view:view容积,pr:null}, '_$容积换热', render容积换热] ]
];

